package com.carl.threadState;


/**
 * WAITING等待状态
 */
public class waitingThread {

    public static void main(String[] args) throws Exception{
        // 创建一个Object实例，用于后续的同步操作
        Object o = new Object();

        // 初始化一个线程t1，该线程会执行一个匿名内部类的Runnable
        // 这个Runnable会尝试获取o的锁，然后进入等待状态
        Thread t1 = new Thread(()->{
            // 在同步块中，获取对象o的锁
            synchronized (o){
                try {
                    // 释放锁，并使当前线程进入等待状态，直到其他线程唤醒它
                    o.wait();
                } catch (InterruptedException e) {
                    // 如果线程被中断，抛出一个运行时异常
                    throw new RuntimeException(e);
                }
            }
        });

        // 启动线程t1
        t1.start();

        // 主线程暂停500毫秒，以便观察线程t1的状态
        Thread.sleep(500);

        // 输出线程t1的状态
        System.out.println(t1.getState());

    }
}
